Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix dualtol in HEkkDual::computeExactDualObjectiveValue() #1182

Open
wants to merge 1 commit into
base: latest
Choose a base branch
from

Conversation

ambros-gleixner
Copy link
Contributor

In SCIP we sometimes use tighter dual feasibility tolerances; with 1e-10, I discovered this inconsistent use of dual tolerance in computeExactDualObjectiveValue() and the subsequent correctDualInfeasibilities().

Without this fix, the assert

      // no shifts should have occurred
      assert(!ekk_instance_.info_.costs_shifted);

is triggered on instance milo-v12-6-r2-40-1 from MIPLIB 2017.

@jajhall
Copy link
Member

jajhall commented Feb 25, 2023

Strange: I'll look at this. If I remember correctly, computeExactDualObjectiveValue() is only used to determine the dual objective value with unperturbed costs to determine whether to terminate via the dual bound, so I'm puzzled how the assert is then avoided.

@ambros-gleixner
Copy link
Contributor Author

The reason is that using the correct (=tighter) tolerance makes computeExactDualObjectiveValue() return minus infinity, so correctDualInfineasibilities() is not called.

@jajhall
Copy link
Member

jajhall commented Feb 26, 2023

OK I guessed something significant had triggered your interest in this. I need to do some sanity performance checks on latest - since I don't think I've done anything to compromise it - and then I'll merge this.

@ambros-gleixner
Copy link
Contributor Author

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants